package graficar;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.GeneralPath;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import logicaDelNegocio.Enlace;

public class Path {
	
	Vector<GeneralPath> gp = new Vector<GeneralPath>();;
	GeneralPath sp;
	private int ancho;
	private int alto;
	String id_origen;
	String id_destino;
	
	public void setCon(ArrayList<Vector<GraficoConmutadores>> lisC){
	
		for(int i=0; i<lisC.size();i++){
			sp = new GeneralPath();
			sp.moveTo(((lisC.get(i).firstElement().x)+((lisC.get(i).firstElement().tamX)/2)), ((lisC.get(i).firstElement().y)+((lisC.get(i).firstElement().tamY)/2)));
			sp.lineTo(((lisC.get(i).lastElement().x)+((lisC.get(i).lastElement().tamX)/2)), ((lisC.get(i).lastElement().y)+((lisC.get(i).lastElement().tamY)/2)));
			sp.closePath();
			gp.add(sp);
		}

    
	}
	
	public void setTerEx(GraficoConmutadorCentral cc){
		
		for(int i=0; i<cc.getTe().size();i++){
			sp = new GeneralPath();
			sp.moveTo(cc.x+(cc.tamX/2), cc.y+(cc.tamY/2));
			sp.lineTo((cc.getTe().get(i).x)+((cc.getTe().get(i).radioX)/2), (cc.getTe().get(i).y)+((cc.getTe().get(i).radioY)/2));
			sp.closePath();
			gp.add(sp);
		}
	}
	
	public void setTerIn(ArrayList<GraficoElipse> lisEliTi, ArrayList<GraficoConmutadorInterno> lisCi){
				
		for(int i=0; i<lisEliTi.size();i++){
			sp = new GeneralPath();
			for (int j=0;j<lisCi.size();j++){
				if(lisEliTi.get(i).id.equals(lisCi.get(j).id)){
					sp.moveTo((lisEliTi.get(i).x + (lisEliTi.get(i).tamX/2)), lisEliTi.get(i).y + (lisEliTi.get(i).tamY/2));
					sp.lineTo(lisCi.get(j).x + (lisCi.get(j).tamX/2), lisCi.get(j).y + (lisCi.get(j).tamY/2));
					sp.closePath();
					gp.add(sp);
				}
			}
		}
		
		
	}
	
	public void graf(Graphics2D g2d, Vector<GeneralPath> gp){
		
		g2d.setStroke(new BasicStroke(5f));
		
		for(int i=0; i<gp.size(); i++){
			g2d.draw((Shape) gp.elementAt(i));
	   		}
		
	}
	
	public void paint(Graphics g){
		
		Graphics2D g2d = (Graphics2D) g;
		
		g2d.setStroke(new BasicStroke(5));
		g2d.setColor(Color.LIGHT_GRAY);
		
		for(int i=0; i<gp.size();i++){
			g2d.draw((Shape) gp.elementAt(i));
		}
		
		
		
		}
	
	public void paintEx(Graphics g, Diagrama lienzo){

		ancho=lienzo.getWidth();
		alto=lienzo.getHeight();

		Graphics2D g2d = (Graphics2D) g;

		float dash[]={(float) (0.00002*(ancho*alto))};
		g2d.setStroke(new BasicStroke(3f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 5f, dash, 0.0f));

		g2d.setColor(Color.ORANGE);

		for(int i=0; i<gp.size();i++){
			g2d.draw((Shape) gp.elementAt(i));
		}



	}
	
	public void paintTi(Graphics g, Diagrama lienzo){

		ancho=lienzo.getWidth();
		alto=lienzo.getHeight();

		Graphics2D g2d = (Graphics2D) g;

		float dash[]={(float) (0.00002*(ancho*alto))};
		g2d.setStroke(new BasicStroke(1.5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 5f, dash, 0.0f));

		g2d.setColor(Color.RED);

		for(int i=0; i<gp.size();i++){
			g2d.draw((Shape) gp.elementAt(i));
		}



	}


}
